/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.reportes;

import com.camachosanchez.reportes.bean.NeumaticosPorUnidad;
import com.camachosanchez.reportes.bean.NeumaticosPorUnidadDetalle;
import com.camachosanchez.util.Constantes;
import com.camachosanchez.util.GUIUtil;
import com.camachosanchez.util.ReportUtil;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileOutputStream;
import java.util.List;

/**
 *
 * @author ZULLY
 */
public class _ReporteNeumaticosXUnidad {
    
    public static String generarReporte(NeumaticosPorUnidad npu) {
        String rutaArchivo = "reportes/neumaticosXunidad" + "_" + GUIUtil.obtenerFechaDDMMYYYHHMMSS() + ".pdf";
        try {
            PdfPCell cell;
            Document document = new Document(PageSize.A4, 20, 20, 20, 20);
            PdfWriter.getInstance(document, new FileOutputStream(rutaArchivo));
            document.open();
            Paragraph paragraph = new Paragraph();
            paragraph.setAlignment(Element.ALIGN_CENTER);
            document.add(ReportUtil.obtenerCabeceraTabla("REPORTE DE NEUMÁTICOS POR UNIDAD"));
            document.add(new Paragraph("\n"));
            if(npu.getTipo() == 2) {
                PdfPTable table = new PdfPTable(1);
                table.setWidthPercentage(100);
                Chunk chunk;
                if(!npu.getRazonSocial().isEmpty()) {
                    chunk = new Chunk("Razón Social: " + npu.getRazonSocial(), Constantes.fuenteCuerpo);
                    cell = new PdfPCell(new Phrase(chunk));
                    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    cell.setBorder(0);
                    table.addCell(cell);
                }
                if(!npu.getTipoUnidad().isEmpty()) {
                    chunk = new Chunk("Tipo de Unidad: " + npu.getTipoUnidad(), Constantes.fuenteCuerpo);
                    cell = new PdfPCell(new Phrase(chunk));
                    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    cell.setBorder(0);
                    table.addCell(cell);
                }
                if(!npu.getMarcaUnidad().isEmpty()) {
                    chunk = new Chunk("Marca de Unidad: " + npu.getMarcaUnidad(), Constantes.fuenteCuerpo);
                    cell = new PdfPCell(new Phrase(chunk));
                    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    cell.setBorder(0);
                    table.addCell(cell);
                }
                if(!npu.getFechaDesde().isEmpty()) {
                    chunk = new Chunk("Fecha de Compra Unidad: desde " + npu.getFechaDesde() + " hasta " + npu.getFechaHasta(), Constantes.fuenteCuerpo);
                    cell = new PdfPCell(new Phrase(chunk));
                    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    cell.setBorder(0);
                    table.addCell(cell);
                }
                document.add(table);
                document.add(new Paragraph("\n"));
            }
            List<NeumaticosPorUnidadDetalle> unidades = npu.getListaNeumaticos();
            for(NeumaticosPorUnidadDetalle unidad : unidades) {
                PdfPTable tablaDetalles = new PdfPTable(7);
                tablaDetalles.setWidthPercentage(100);
                tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla("UNIDAD:", Constantes.fuenteEtiqueta, 1, Constantes.COLOR_CABECERA_TABLA));
                tablaDetalles.addCell(ReportUtil.obtenerCeldaTexto(unidad.getCodigoV() + "::" + unidad.getPlaca(), Constantes.fuenteCuerpo, 6));
                //Cabecera Tabla
                tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla("POS", Constantes.fuenteTitulos, 1, Constantes.COLOR_CABECERA_TABLA));
                tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla("CÓDIGO", Constantes.fuenteTitulos, 1, Constantes.COLOR_CABECERA_TABLA));
                tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla("MARCA", Constantes.fuenteTitulos, 1, Constantes.COLOR_CABECERA_TABLA));
                tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla("MEDIDA", Constantes.fuenteTitulos, 1, Constantes.COLOR_CABECERA_TABLA));
                tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla("R", Constantes.fuenteTitulos, 1, Constantes.COLOR_CABECERA_TABLA));
                tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla("ALTURA", Constantes.fuenteTitulos, 1, Constantes.COLOR_CABECERA_TABLA));
                tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla("ESTADO", Constantes.fuenteTitulos, 1, Constantes.COLOR_CABECERA_TABLA));
                List<String[]> neumaticos = unidad.getDetalles();
                for (String[] n : neumaticos) {
                    if (n.length == 7) {
                        tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla(n[0], Constantes.fuenteCuerpo, 1));
                        tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla(n[1], Constantes.fuenteCuerpo, 1));
                        tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla(n[2], Constantes.fuenteCuerpo, 1));
                        tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla(n[3], Constantes.fuenteCuerpo, 1));
                        tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla(n[4], Constantes.fuenteCuerpo, 1));
                        tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla(n[5], Constantes.fuenteCuerpo, 1));
                        tablaDetalles.addCell(ReportUtil.obtenerCeldaCabeceraTabla(n[6], Constantes.fuenteCuerpo, 1));
                    }
                }
                tablaDetalles.addCell(ReportUtil.obtenerCeldaSinBorde(" ", Constantes.fuenteCuerpo, 7));
                document.add(tablaDetalles);
            }
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
            rutaArchivo = null;
        } finally {
            return rutaArchivo;
        }
    }
}
